﻿/*本程序表明,cookies和arr值相同.它还演示了指针概念如何使sum_arr函数比以前更加通用
*/
#include<iostream>
const int ArSize = 8;
int sum_arr(int arr[],int n);

int main()
{
    int cookies[ArSize]={1,2,4,8,16,32,64,128};

    std::cout<<cookies << " = array address, ";

    std::cout << sizeof cookies << " = sizeof cookies\n";
    int sum = sum_arr(cookies,ArSize);
    std::cout << "Total cookies eaten : " << sum <<std::endl;
    sum = sum_arr(cookies,3);
    std::cout << "First three eaters ate "<<sum<< " cookies.\n";
    sum = sum_arr(cookies+4,4);
    std::cout << "Last four eaters ate " << sum << " cookies.\n";
    return 0;
}

//返回整数数组的向后n位求和
int sum_arr(int arr[],int n)
{
    int total = 0;
    std::cout <<arr<<" = arr, ";
    std::cout << sizeof arr<<" = sizeof arr\n";
    for(int i =0;i <n;i++)
    {
        total = total+arr[i];
    }
    return total;
}
/*
 * 程序说明了数组函数中一些有趣的地方,首先cookies和arr指向同一个地址.
 * 但是sizeof cookies的值为32,而sizeof arr为4.
 * 这是由于sizeof sookies是整个数组的长度,而sizeof arr只是指针变量的长度.
*/
